{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 一、监督学习中涉及的基本概念\n",
    "   1. 定义   \n",
    "       - 每当想要根据给定输入预测某个结果，并且还有输入/输出的示例时，则称之为监督学习\n",
    "   2. 监督学习涉及到的两个重要问题\n",
    "       - 分类\n",
    "           - 其任务是预测类表标签\n",
    "       - 回归\n",
    "           - 其任务是预测一个连续值\n",
    "       - 区分两种问题的方式\n",
    "           - 输出是否连续，若是具有一定的连续性，则为一个回归问题，否者为一个分类问题\n",
    "   3. 泛化、过拟合和欠拟合\n",
    "       - 泛化\n",
    "           - 如果一个模型能过对没有见过的数据做出准确的预测，则这个模型能够从训练集`泛化`到测试集\n",
    "           - 我们一般都需要泛化能力强，精准度高的模型\n",
    "       - 过拟合\n",
    "           - 是模型在训练集上表现很好，但是不能泛化到测试或者新的数据上，则存在过拟合\n",
    "       - 欠拟合\n",
    "           - 是模型无法抓住数据的全部内容及数据中的变化，甚至模型在训练集中表现的泛化能力都很差，则存在欠拟合\n",
    "   4. 模型复杂度和数据集大小的关系\n",
    "       - 一般而言，数据集中包含的数据点的变化范围大，在不发生过拟合的情况下，模型越复杂越好"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "附：参数模型和非参数模型    \n",
    "\n",
    "- 参数模型中，参数一旦确定，模型就完全确定了，进行预测就不依赖于数据集   \n",
    "- 非参数模型中，在每次预测中都需要重新考虑部分或者全部训练数据集   "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 二、K近邻算法\n",
    "1. K近邻分类   \n",
    "    ```from sklearn.neighbors import KNeighborsClassifier```\n",
    "    - 计算已知类别数据集中的点与当前点的距离\n",
    "    - 按照距离递增次序排序\n",
    "    - 选取与当前点距离最小的k个点\n",
    "    - 确定前k个点所在类别对应的出现频率\n",
    "    - 返回前k个点出现的评率最高的类别作为当前点的预测分类"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "精度为：0.9210526315789473\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "from matplotlib import pyplot as plt\n",
    "from sklearn.datasets import load_iris\n",
    "# 实例化数据集\n",
    "iris_data = load_iris()\n",
    "# 将数据集乱序划分为训练集和测试集\n",
    "from sklearn.model_selection import train_test_split\n",
    "X_train, X_test, y_train, y_test = train_test_split(iris_data['data'], iris_data['target'], random_state=66)\n",
    "# 使用knn算法\n",
    "from sklearn.neighbors import KNeighborsClassifier\n",
    "# 使用一个邻居\n",
    "knn = KNeighborsClassifier(n_neighbors=1)\n",
    "# 训练数据\n",
    "knn.fit(X_train, y_train)\n",
    "# 进行预测，这里只是打印精度\n",
    "\n",
    "# # 随机使用一个数据来测试一下\n",
    "# X_new = np.array([[5,2.9,1,0.27]])\n",
    "# result = knn.predict(X_new)\n",
    "# print(\"品种对应标签:\" + str(result))\n",
    "# print(\"品种:\" + str(iris_data['target_names'][result]))\n",
    "print(\"精度为：\" + str(knn.score(X_test, y_test)))\n",
    "# 验证邻居数和精度的关系\n",
    "x = [i for i in range(1,100)]\n",
    "train_result = list()\n",
    "pred_result = list()\n",
    "for i in x:\n",
    "    knn = KNeighborsClassifier(n_neighbors=i)\n",
    "    knn.fit(X_train, y_train)\n",
    "    train_result.append(knn.score(X_train, y_train))\n",
    "    pred_result.append(knn.score(X_test, y_test))\n",
    "plt.plot(x, train_result, label = \"train_result\")\n",
    "plt.plot(x, pred_result, label = \"pred_result\")\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 绘制出分类结果\n",
    "knn = KNeighborsClassifier(n_neighbors=10)\n",
    "knn.fit(X_train, y_train)\n",
    "result = knn.predict(X_test)\n",
    "x = [i for i in range(1,len(result)+1)]\n",
    "plt.plot(x, result,label=\"pred_result\")\n",
    "plt.plot(x, y_test,label=\"origin_result\")\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "可以看出，数据训练的精度慢慢开始提高时，相应的泛化能力也在不断增强（这里是精度在提高），当达到一个阀值时(k<15左右)，开始出现过拟合现象，泛化能力开始变差（精度开始降低）"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "2. K近邻回归   \n",
    "    ```from sklearn.neighbors import KNeighborsRegressor```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import mglearn\n",
    "import numpy as np\n",
    "from sklearn.neighbors import KNeighborsRegressor\n",
    "from sklearn.model_selection import train_test_split\n",
    "X, y = mglearn.datasets.make_wave(n_samples=40)\n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)\n",
    "\n",
    "# 验证邻居数和精度的关系\n",
    "line = np.linspace(-3, 3, 1000).reshape(-1,1) # 创建1000个数据点，在-3~3之间分布\n",
    "x = [1, 3, 9]\n",
    "for i in x:\n",
    "    reg = KNeighborsRegressor(i)\n",
    "    reg.fit(X_train, y_train)\n",
    "    plt.plot(line, reg.predict(line))\n",
    "    plt.plot(X_train, y_train,'^')\n",
    "    plt.plot(X_test, y_test,'v')\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "3. 小结\n",
    "    - K近邻算法预测速度相对较慢且对于多特征的数据集没有很好的处理方案"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 三、线性模型\n",
    "   - 利用输入的特征的线性函数来进行预测和分类\n",
    "   - 【回归模型】常见的线性模型预测模型（将在后面的代码中对这三种模型进行对比分析）\n",
    "       - 线性回归（最小二乘法）-LinearRegression\n",
    "       - 岭回归-Ridge\n",
    "          - 约束系数，L2正则化\n",
    "          - 若是有足够多的训练数据，岭回归和线性回归将具有相同的性能\n",
    "       - lasso\n",
    "           - 约束系数，L1正则化\n",
    "   - 【分类模型】\n",
    "       - 对于每个分类器而言，位于黑线上方的新数据点会被划分为类别为1，在黑线下方划分为0\n",
    "       - 逻辑回归 - Logistic regression\n",
    "       - 线性支持向量机 - linear support vector machine\n",
    "       \n",
    "   - 注意\n",
    "       - 【回归模型】如果特征数量大于训练数量，任何目标y都可以用线性函数完美拟合\n",
    "       - 【分类模型】对于逻辑回归和支持向量机，决定正则化强度的权衡参数为C，C越大，对应正则化越弱，其将训练集拟合的越好；若C越小，那么模型更强调使系数w更接近0；另外，C越大，越强调每个数据点都分类的重要性，而较小的C将会让算法更加适应更多的数据点\n",
    "       - 线性模型主要的参数是正则化参数，在回归模型中叫alpha，在分类模型中叫C；alpha较大或者C较小，说明模型相对简单。\n",
    "       - 关于L1和L2 的正交问题\n",
    "           - 假定只有几个特征向量是真正重要的，那么可以使用L1正交，否者使用L2默认正交\n",
    "           \n",
    "           \n",
    "   1. 线性回归（最小二乘法）【LinearRegression】   \n",
    "   ```from sklearn.linear_model import LinearRegression```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "y=0.44153666463089647x-0.01711124414733381\n",
      "斜率为：[0.44153666]\n",
      "截距为：-0.01711124414733381\n",
      "训练集的精度：0.6592061059587275\n",
      "测试集的精度：0.6932519118518163\n"
     ]
    }
   ],
   "source": [
    "import mglearn\n",
    "from sklearn.linear_model import LinearRegression\n",
    "from sklearn.model_selection import train_test_split\n",
    "X, y = mglearn.datasets.make_wave(n_samples=60)\n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)\n",
    "lr = LinearRegression().fit(X_train, y_train)\n",
    "\n",
    "# 在使用线性回归模型中，模型的斜率保存在coef_中，截距保存在intercept_中\n",
    "print('y='+str(lr.coef_[0])+'x'+str(lr.intercept_))\n",
    "print(\"斜率为：\"+str(lr.coef_)+'\\n'+\"截距为：\"+str(lr.intercept_))\n",
    "print(\"训练集的精度：\"+str(lr.score(X_train,y_train)))\n",
    "print(\"测试集的精度：\"+str(lr.score(X_test,y_test)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "2. 岭回归【Ridge】   \n",
    "```from sklearn.linear_model import Ridge```\n",
    "    - 岭回归在模型的简单性与训练集性能之间做出权衡，简单性和训练集性能二者对于模型的重要性可以使用alpha来设置【alpha默认为1，越大，训练集性能越低，但是泛化性能可能会更好】"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "y=0.43835808272206384x-0.01784482961810112\n",
      "斜率为：[0.43835808]\n",
      "截距为：-0.01784482961810112\n",
      "训练集的精度：0.6591719430775402\n",
      "测试集的精度：0.6955387463979459\n",
      "----------------------------------------\n",
      "y=0.38318745639950197x-0.03057766804862866\n",
      "斜率为：[0.38318746]\n",
      "截距为：-0.03057766804862866\n",
      "训练集的精度：0.6476939249202243\n",
      "测试集的精度：0.7182350490608919\n",
      "----------------------------------------\n",
      "y=0.34035166674618245x-0.040463747382057075\n",
      "斜率为：[0.34035167]\n",
      "截距为：-0.040463747382057075\n",
      "训练集的精度：0.6245866746105326\n",
      "测试集的精度：0.7136917803198799\n",
      "----------------------------------------\n",
      "y=0.30612998391555x-0.0483617755058561\n",
      "斜率为：[0.30612998]\n",
      "截距为：-0.0483617755058561\n",
      "训练集的精度：0.5972095077126305\n",
      "测试集的精度：0.6961393357411997\n",
      "----------------------------------------\n",
      "y=0.27816140786404925x-0.054816648030115406\n",
      "斜率为：[0.27816141]\n",
      "截距为：-0.054816648030115406\n",
      "训练集的精度：0.5689533978041488\n",
      "测试集的精度：0.6726107365599796\n",
      "----------------------------------------\n"
     ]
    }
   ],
   "source": [
    "import mglearn\n",
    "from sklearn.linear_model import Ridge\n",
    "from sklearn.model_selection import train_test_split\n",
    "X, y = mglearn.datasets.make_wave(n_samples=60)\n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)\n",
    "for i in range(1, 100, 20):\n",
    "    lr = Ridge(alpha=i).fit(X_train, y_train)\n",
    "\n",
    "    # 在使用岭回归模型中，模型的斜率保存在coef_中，截距保存在intercept_中\n",
    "    print('y='+str(lr.coef_[0])+'x'+str(lr.intercept_))\n",
    "    print(\"斜率为：\"+str(lr.coef_)+'\\n'+\"截距为：\"+str(lr.intercept_))\n",
    "    print(\"训练集的精度：\"+str(lr.score(X_train,y_train)))\n",
    "    print(\"测试集的精度：\"+str(lr.score(X_test,y_test)))\n",
    "    print('-'*40)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "3. lasso    \n",
    "```from sklearn.linear_model import Lasso```   \n",
    "在岭回归上加入L1正则化，使用时，还需加上max_iter"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "4. 逻辑回归 Logistics regression   \n",
    "```from sklearn.linear_model import LogisticRegression```\n",
    "5. 线性支持向量机 linear support vector machine   \n",
    "```from sklearn.svm import LinearSVC```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练集的精度：0.960093896713615\n",
      "测试集的精度：0.958041958041958\n",
      "训练集的精度：0.9272300469483568\n",
      "测试集的精度：0.916083916083916\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Bean\\AppData\\Roaming\\Python\\Python36\\site-packages\\sklearn\\linear_model\\_logistic.py:764: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
      "\n",
      "Increase the number of iterations (max_iter) or scale the data as shown in:\n",
      "    https://scikit-learn.org/stable/modules/preprocessing.html\n",
      "Please also refer to the documentation for alternative solver options:\n",
      "    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
      "  extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n",
      "C:\\Users\\Bean\\AppData\\Roaming\\Python\\Python36\\site-packages\\sklearn\\svm\\_base.py:977: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.\n",
      "  \"the number of iterations.\", ConvergenceWarning)\n"
     ]
    }
   ],
   "source": [
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.svm import LinearSVC\n",
    "from sklearn.datasets import load_breast_cancer\n",
    "\n",
    "cancer = load_breast_cancer()\n",
    "X_train, X_test, y_train, y_test = train_test_split(cancer['data'],cancer['target'], random_state=1)\n",
    "\n",
    "logreg = LogisticRegression(C=100).fit(X_train, y_train)\n",
    "print(\"训练集的精度：\"+str(logreg.score(X_train,y_train)))\n",
    "print(\"测试集的精度：\"+str(logreg.score(X_test,y_test)))\n",
    "linearsvm = LinearSVC(C=10).fit(X_train, y_train)\n",
    "print(\"训练集的精度：\"+str(linearsvm.score(X_train,y_train)))\n",
    "print(\"测试集的精度：\"+str(linearsvm.score(X_test,y_test)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 四、朴树贝叶斯分类器\n",
    "   - 高斯朴树贝叶斯\n",
    "   - 多项式朴树贝叶斯"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
